/**
 * 风险管理系统通用JavaScript函数
 */

// 当DOM加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    // CSRF Token处理
    const csrfToken = document.querySelector("meta[name='_csrf']")?.getAttribute("content");
    const csrfHeader = document.querySelector("meta[name='_csrf_header']")?.getAttribute("content");

    // 设置Fetch请求的默认CSRF头
    if (csrfToken && csrfHeader) {
        // 全局拦截fetch请求添加CSRF头
        const originalFetch = window.fetch;
        window.fetch = function(url, options = {}) {
            // 创建新的options对象
            const newOptions = { ...options };
            
            // 确保headers存在
            newOptions.headers = newOptions.headers || {};
            
            // 如果headers是Headers对象，添加CSRF头
            if (newOptions.headers instanceof Headers) {
                if (!newOptions.headers.has(csrfHeader)) {
                    newOptions.headers.append(csrfHeader, csrfToken);
                }
            } 
            // 如果headers是字符串表达式（如Thymeleaf模板中的表达式），则不处理
            else if (typeof newOptions.headers === 'string' || 
                     (typeof newOptions.headers === 'object' && 
                      Object.keys(newOptions.headers).some(key => key.includes('$')))) {
                // 跳过处理含有模板表达式的headers
            } 
            // 如果headers是普通对象
            else if (typeof newOptions.headers === 'object') {
                // 安全地添加CSRF头，避免使用模板字符串作为键
                if (!Object.prototype.hasOwnProperty.call(newOptions.headers, csrfHeader)) {
                    const updatedHeaders = {};
                    Object.keys(newOptions.headers).forEach(key => {
                        updatedHeaders[key] = newOptions.headers[key];
                    });
                    updatedHeaders[csrfHeader] = csrfToken;
                    newOptions.headers = updatedHeaders;
                }
            }
            
            // 调用原始fetch
            return originalFetch.call(window, url, newOptions);
        };
    }

    // 初始化Bootstrap提示框
    if (typeof bootstrap !== 'undefined' && typeof bootstrap.Tooltip !== 'undefined') {
        const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
        tooltipTriggerList.map(function(tooltipTriggerEl) {
            return new bootstrap.Tooltip(tooltipTriggerEl);
        });
    }

    // 对jQuery的AJAX也添加CSRF支持（如果jQuery存在）
    if (typeof $ !== 'undefined' && $.ajaxSetup) {
        $.ajaxSetup({
            beforeSend: function(xhr) {
                if (csrfHeader && csrfToken) {
                    xhr.setRequestHeader(csrfHeader, csrfToken);
                }
            }
        });

        // 处理AJAX错误
        $(document).ajaxError(function(event, xhr, settings) {
            if (xhr.status === 403) {
                console.error('权限错误: 您可能没有权限执行此操作 (403 Forbidden)');
            } else if (xhr.status === 500) {
                console.error('服务器错误: 请联系管理员 (500 Internal Server Error)');
            } else if (xhr.status === 404) {
                console.error('请求的资源不存在: ' + settings.url + ' (404 Not Found)');
            } else {
                console.error('请求错误: ' + xhr.status + ' ' + xhr.statusText);
            }
        });
    }

    // 修复Font Awesome图标问题
    fixFontAwesomeIcons();
});

/**
 * 修复Font Awesome图标显示问题
 */
function fixFontAwesomeIcons() {
    try {
        // 检查是否有Font Awesome图标
        const faIcons = document.querySelectorAll('.fa, .fas, .far, .fab, .fa-solid, .fa-regular, .fa-brands');
        
        if (faIcons.length > 0) {
            for (const icon of faIcons) {
                // 获取所有类名
                const classes = Array.from(icon.classList);
                
                // 获取图标名称类 (以fa-开头，但不是fa-solid/fa-regular/fa-brands的类)
                const iconClasses = classes.filter(cls => 
                    cls.startsWith('fa-') && 
                    !['fa-solid', 'fa-regular', 'fa-brands'].includes(cls)
                );
                
                // 确保图标有正确的样式类
                if (iconClasses.length > 0) {
                    if (!classes.includes('fas') && !classes.includes('far') && !classes.includes('fab')) {
                        // 默认添加fas
                        icon.classList.add('fas');
                    }
                }
            }
        }
    } catch (error) {
        console.warn('Font Awesome图标修复时出错:', error);
    }
} 